// 特定用户登录测试脚本 - 测试admin用户

const axios = require('axios');
const BASE_URL = 'http://localhost:3000/api/auth';

// 要测试的固定凭据
const TEST_USERNAME = 'admin';
const TEST_PASSWORD = '123456';
const TEST_EMAIL = '525675049@qq.com';

// 存储测试过程中获取的token
let accessToken = '';
let refreshToken = '';
let registrationSuccess = false;

async function testSpecificUserAuth() {
    console.log('===== 开始特定用户测试 =====');
    console.log(`测试用户: ${TEST_USERNAME}, 密码: ${TEST_PASSWORD}`);

    // 1. 测试注册特定用户
    try {
        console.log('\n1. 尝试注册特定用户...');
        const registerResponse = await axios.post(`${BASE_URL}/register`, {
            username: TEST_USERNAME,
            password: TEST_PASSWORD,
            email: TEST_EMAIL
        });

        console.log('✅ 注册成功!');
        console.log('响应状态码:', registerResponse.status);
        console.log('响应数据:', registerResponse.data);

        registrationSuccess = true;
    } catch (error) {
        console.log('❌ 注册失败');

        if (error.response) {
            // 服务器返回了错误响应
            console.log('状态码:', error.response.status);
            console.log('错误信息:', error.response.data);

            // 检查是否是因为用户已存在
            if (error.response.status === 409) {
                console.log('用户已经存在，将继续进行登录测试');
            } else {
                console.error('注册失败，原因不是用户已存在，详情:', error.response.data);
            }
        } else if (error.request) {
            // 请求已发送但没有收到响应
            console.error('无法连接到服务器，请确保服务器正在运行');
            return;
        } else {
            // 请求设置时出现问题
            console.error('请求错误:', error.message);
            return;
        }
    }

    // 2. 测试登录特定用户
    try {
        console.log('\n2. 尝试登录特定用户...');
        const loginResponse = await axios.post(`${BASE_URL}/login`, {
            username: TEST_USERNAME,
            password: TEST_PASSWORD
        });

        console.log('✅ 登录成功!');
        console.log('响应状态码:', loginResponse.status);
        console.log('响应数据:', loginResponse.data);

        // 保存token信息
        accessToken = loginResponse.data.data.token;
        refreshToken = loginResponse.data.data.refreshToken;

        console.log('\n令牌信息:');
        console.log('访问令牌 (前20字符):', accessToken.substring(0, 20) + '...');
        console.log('刷新令牌 (前20字符):', refreshToken.substring(0, 20) + '...');

        console.log('\n===== 特定用户测试完成 =====');
        console.log(`用户 "${TEST_USERNAME}" 已验证成功，可以使用密码 "${TEST_PASSWORD}" 登录系统`);
    } catch (error) {
        console.log('❌ 登录失败');

        if (error.response) {
            console.log('状态码:', error.response.status);
            console.log('错误信息:', error.response.data);
        } else if (error.request) {
            console.error('无法连接到服务器，请确保服务器正在运行');
        } else {
            console.error('请求错误:', error.message);
        }
    }
}

// 执行测试
testSpecificUserAuth().catch(error => {
    console.error('测试过程中出现未捕获的错误:', error);
}); 